import axios from "axios";
import store from "../store";
import Element from 'element-ui'
export function request(config){
  const instance = axios.create({
    baseURL: 'http://localhost:12345',
    timeout: '100000'
  });
  instance.interceptors.request.use(config=>{
    //如果不是login请求
    if(config.url.indexOf('login') < 0 && config.url.indexOf('register') < 0){
      //在每次发送请求前， 如果有token存在， 则发送过去
      let token = store.state.token;
      if(token !== null && token !== undefined && !(token === '')){
        //添加header
        config.headers['Authentication'] = token;
        return config
      }
    }
      return config;
  }, error => {
    Element.Message({
      showClose: true,
      message: '请求失败',
      type: 'error',
      duration: 2000
    });
    return Promise.reject(error)
  });

  instance.interceptors.response.use(res=>{
    // console.log("======请求 响应前  是正确的还是 错误的 ", res);
    //获取响应数据
    let data = res.data;
    //判断 状态码为100 或者 200，访问成功， return 数据
    if(data.code === 100 || data.code === 200){
      return res;
    }else if(data.code === 403){
      //403, 表示登录失败返回的状态码, 要重新登录， 并且有弹窗提示 ， 跳转登录页面
      Element.Message({
        showClose: true,
        message: data.message,
        type: 'error',
        duration: 2000
      });
      return Promise.reject(res);   //reject， 不会被 then调用成功
    }else{
      //出现其他访问失败的异常
      Element.Message({
        showClose: true,
        message: '访问失败',
        type: 'error',
        duration: 2000
      });
      return Promise.reject(res);   //reject， 不会被 then调用成功
    }
    return res;
  },
      error => {
        console.log('err' + error);  // for debug
        if(error.response.data) {
          error.message = error.response.data.msg
        }
        return Promise.reject(error);
      });

  return instance(config);
}
